package org.cpar.compiler;

import org.cpar.compiler.nodes.AllocProcCall;
import org.cpar.compiler.nodes.AnsiFunction;
import org.cpar.compiler.nodes.CPARType;
import org.cpar.compiler.nodes.CreateProcCall;
import org.cpar.compiler.nodes.EventStatement;
import org.cpar.compiler.nodes.ForAllStatement;
import org.cpar.compiler.nodes.MainFunction;
import org.cpar.compiler.nodes.MicroBlock;
import org.cpar.compiler.nodes.MonitorBlock;
import org.cpar.compiler.nodes.MonitorCall;
import org.cpar.compiler.nodes.ParallelBlock;
import org.cpar.compiler.nodes.SemaphoreStatement;
import org.cpar.compiler.nodes.SharedObject;
import org.cpar.compiler.nodes.TaskBody;
import org.cpar.compiler.nodes.TaskSpec;
import org.cpar.compiler.nodes.Unit;
import org.cpar.compiler.nodes.VarDeclarations;
import org.cpar.compiler.nodes.VarReference;
import org.cpar.compiler.nodes.WaitAllCall;

public interface ICodeWriter {

	public void visit(SharedObject stmt);

	public void visit(Unit unit);

	public void visit(TaskSpec taskSpec);

	public void visit(TaskBody taskBody);

	public void visit(CPARType cparType);

	public void visit(VarDeclarations varDeclarations);

	public void visit(VarReference varReference);

	public void visit(SemaphoreStatement semaphoreStatement);

	public void visit(MainFunction mainFunction);

	public void visit(AllocProcCall allocProcCall);

	public void visit(ForAllStatement forAllStatement);

	public void visit(CreateProcCall createProcCall);

	public void visit(WaitAllCall waitAllCall);

	public void visit(EventStatement eventStatement);

	public void visit(ParallelBlock parallelBlock);

	public void visit(MicroBlock microBlock);

	public void visit(MonitorBlock monitorBlock);

	public void visit(MonitorCall monitorCall);

	public void visit(AnsiFunction ansiFunction);

}
